import dayjs from 'dayjs';
import i18n from '@/i18n';
import { ModalTypeEnum, type ModalTypeParam } from './enum';
import { useDictionaryStore } from '@/store/modules/dictionary';
import { connectOption } from './selectOption';

const dicStore = ref();
nextTick(() => {
	dicStore.value = useDictionaryStore();
});

const { t } = i18n.global;

type PatternType = 'y' | 'ym' | 'ymd' | 'ymdhm' | 'ymdhms' | 'hm' | 'd' | 'hms';
/** 时间格式化
 * @param dateStr 时间戳
 * @param pattern 'y' | 'ym' | 'ymd' | 'ymdhm' | 'ymdhms' | 'hm' | 'd' | 'hms'
 */
export function $dayjs(dateStr: number, pattern: PatternType = 'ymd') {
	// @ts-ignore
	const patternString = t(`date.${pattern}`).replace('dd', 'DD');
	if (dateStr) {
		if (dateStr.toString().length === 10) {
			return dayjs.unix(dateStr).format(patternString);
		} else {
			return dayjs(dateStr).format(patternString);
		}
	} else {
		return '-';
	}
}

/** 常规modal
 * @param params ModalTypeEnum数据
 */
export function titleFormatter(params: ModalTypeParam) {
	switch (params) {
		case ModalTypeEnum.add:
			return t('common.add');
		case ModalTypeEnum.detail:
			return t('common.detail');
		case ModalTypeEnum.update:
			return t('common.update');
		default:
			return '';
	}
}

/** 连接状态 */
export function connectStateFromatter(params) {
	return normalOptionFormatter(params, connectOption);
}
/** 连接状态颜色 */
export function connectStateColorFormat(params) {
	if (Number(params) === 1) {
		return '#20FF3F'; // 在线 绿色
	}
	return '#aaa'; // 离线 灰色
}

/** 通用formatter函数
 * @param params 选中的value值
 * @param option [{label: string, value: 1}]
 * @return value对应的label值
 */
export function normalOptionFormatter(params, option: NormalOption): string {
	for (let i = 0; i < option.length; i++) {
		if (option[i].value === params) {
			return option[i].label;
		}
	}
	return params || '-';
}

/* *************数据字典************* */
/** 设备类型 */
export function devTypeOptionFormatter(params) {
	return normalOptionFormatter(params, dicStore.value.devTypeOption);
}

/** 信号点类型 */
export function signalTypeOptionFormatter(params) {
	return normalOptionFormatter(params, dicStore.value.signalTypeOption);
}

/** 告警类型 */
export function alarmTypeOptionFormatter(params) {
	return normalOptionFormatter(params, dicStore.value.alarmTypeOption);
}

/** 告警级别 */
export function alarmLevelOptionFormatter(params) {
	return normalOptionFormatter(params, dicStore.value.alarmLevelOption);
}
